<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>寻找质数</title>
    <script>
      //质数性质：所有大于10的质数中，个位数只有1,3,7,9。
      // 寻找1~10000之间的质数
      /* for (var i = 2; i < 10000; i++) {
        //根据质数性质之一减少循环计算
        if (i < 10) {
          var sum = 0; //约数总个数
          for (var j = 1; j <= i; j++) {
            //约数数量大于2，非质数，跳过当前循环
            if (sum > 2) {
              continue;
            }
            if (i % j === 0) {
              sum++;
            }
          }
          //约数数量等于2，为质数
          if (sum === 2) {
            console.log("1-10000之间的质数有：" + i);
          }
        } else {
          var mod = i % 10;
          //根据质数性质之一减少循环计算
          if (mod === 1 || mod === 3 || mod === 7 || mod === 9) {
            var sum2 = 0; //约数总个数
            for (var k = 1; k <= i; k++) {
              //约数数量大于2，非质数，终止当前循环
              if (sum2 > 2) {
                continue;
              }
              if (i % k === 0) {
                sum2++;
              }
            }
            //约数数量等于2，为质数
            if (sum2 === 2) {
              console.log("1-10000之间的质数有：" + i);
            }
          }
        }
      } */

      for (var i = 2; i <= 10000; i++) {
        //根据质数性质之一减少循环计算
        //循环优化， 在1-n之间， 有约数在1 - n的平方根之间， 则该数非质数，终止当前循环
        var sum = 0;
        for (var j = 1, sqrt = Math.sqrt(i); j <= sqrt; j++) {
          var mod = i % j;
          if (mod === 0) {
            if (j > 1) {
              sum++;
              // console.log(j);
              break;
            }
          }
        }
        if (sum === 0) {
          console.log("1-10000之间的质数有：" + i);
        }
      }
    </script>
  </head>
  <body></body>
</html>
